package com.ic.util;

import org.apache.log4j.Logger;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * Description: 本类用于处理日期相关内容
 * Author: zen_hu
 * Date  : 2017/1/19
 * Time  : 0:57
 */
public class DateUtil {
	public static final Logger LOGGER = Logger.getLogger(DateUtil.class);

	/**
	 * 将unix时间戳转换为java指定日期格式
	 *
	 * @param timeStampStr unix时间戳
	 * @return 指定格式字符串
	 */
	public static String timeStampToDate(String timeStampStr) {
		return timeStampToDate(timeStampStr, null);
	}

	/**
	 * 将unix时间戳转换为java指定日期格式
	 *
	 * @param timeStampStr unix时间戳
	 * @param formats      日期格式,如为空则默认为：yyyy-MM-dd HH:mm:ss
	 * @return 指定格式字符串
	 */
	public static String timeStampToDate(String timeStampStr, String formats) {
		if (!StringUtil.notNullAndNotBlank(formats)) formats = "yyyy-MM-dd HH:mm:ss";
		Long aLong = Long.parseLong(timeStampStr) * 1000;
		return new SimpleDateFormat(formats, Locale.CHINA).format(new Date(aLong));
	}

	/**
	 * 将java日期格式字符串转换成时间戳
	 *
	 * @param dateStr 日期字符串
	 * @return 时间戳
	 */
	public static String dateToTimeStamp(String dateStr) throws ParseException {
		return dateToTimeStamp(dateStr, null);
	}

	/**
	 * 将java日期格式字符串转换成时间戳
	 *
	 * @param dateStr 日期字符串
	 * @param format  如：yyyy-MM-dd HH:mm:ss
	 * @return 时间戳
	 */
	public static String dateToTimeStamp(String dateStr, String format) throws ParseException {
		if (format == null) format = "yyyy-MM-dd HH:mm:ss";
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
		try {
			return String.valueOf(simpleDateFormat.parse(dateStr).getTime() / 1000);
		} catch (ParseException e) {
			LOGGER.warn("日期格式转换错误");
			throw e;
		}
	}

	/**
	 * 获取当前时间戳(精确到秒)
	 *
	 * @return 当前时间戳
	 */
	public static String getNowTimeStamp() {
		return String.valueOf(System.currentTimeMillis() / 1000);
	}

	public static void main(String[] args) throws ParseException {
		System.out.println(dateToTimeStamp("2017-02-13 16:35:25"));
		System.out.println(timeStampToDate("1499666803"));
		System.out.println(getNowTimeStamp());


	}
}
